The present invention relates to the use of web pages, and more particularly, to persisting the state of visual control elements in web pages constructed dynamically from widgets and resources specified in a uniform resource locator (URL).
For systems management web applications, many different web pages are composed from a variety of available and reusable widgets. A widget may be any code, application, or JavaScript class that creates an object, such as via implementation of a constructor, which takes or receives parameters and a pointer to a source document object model (DOM) node, such as a Dojo “srcNodeRef.” Any of these widgets may be composites of one or more simpler widgets. In other words, each major area of a display may be rendered based on a “super-widget,” which may include a plurality of simpler widgets and which may be reused to build many different web pages for display of information from a broad range of resources. For example, a “tree selector” widget may include a tree, a title, buttons, and possibly other sub-widgets of even simpler construction.
The web pages are composed from the widgets in a flexible way, so that new pages may be easily defined during prototyping and development. Moreover, new pages may be created in the field after installation of a system, after the product has shipped, so that a user's needs that may not be acknowledged or readily known during building of the system are capable of being addressed on site. Many systems management applications have a rich ecosystem of resources, along with different types of resources, and specified collections of resources. A large number of different pages are possible given these resources, using different permutations of the widgets and types/groups of resources.
When a table or a tree is output to a user on a web page dynamically constructed from re-usable widgets that pull resources from a specified URL, it is possible to maneuver through and manipulate the table and/or trees in many different ways prior to accessing a next web page which is dynamically rendered from the same or different URL. Any sort of manipulation or changes may be made, such as sorting columns and/or rows by a specific parameter or value in a table, adjusting widths of columns and/or rows in a table, filtering according to a specific criteria or parameter, selection of a particular row, column, or value in a table or tree, expansion of a branch in a tree, selection of a particular branch or node in a tree, etc.
However, any changes or manipulations that are made to any visual control elements, such as tables, trees, and other complex widgets, output on an initial web page are lost when the user navigates away from the initial web page to a subsequent web page, and then navigates back to the initial web page. This is because the initial web page is dynamically rendered each time it is accessed, according to conventional methods, with no ability to store visual control element or widget state information upon reloading.
Accordingly, when navigating between web pages built dynamically from a URL, it would be beneficial to maintain the last viewed state of any visual control elements and/or widgets which are output on a previously viewed web page when a user navigates back to that particular web page.